汇编伪指令db,dw,dd与他们的字符串

您所在的位置:网站首页 dd 什么意思 汇编伪指令db,dw,dd与他们的字符串

汇编伪指令db,dw,dd与他们的字符串

2024-06-02 03:49| 来源: 网络整理| 查看: 265

伪指令db,dw,dd不在乎CPU是谁,只在乎谁是他们的编译器。

伪指令db、dw、dd都可以定义字符串,但最多的是用db来定义字符串,第一个原因是dw、dd定义的字符串到了内存中排序是相反的。如图:

dw我定义了两个字符串'12'和'56',到了内存中为'21'和'65'。

dd我定义了两个字符串'abcd'和'ef',到了内存中为'bcda'和'fe'。

这是什么原因造成的呢??这是因为dw与dd定义的字符串长度超出了1个字节,因此在字符串中的每个元素间就会有一个线性的高低位排序。在字符串'abcd'中,元素按从高位向低位线性排序。在内存中,数据由低位向高位线性排序,因此字符串'abcd'在内存中的顺序是从低位向高位排序的,所以相反。

第二个原因是不同版本编译器对dw与dd定义字符串的指令格式支持不一样。

masm6支持dw定义的字符串元素最多有2个,dd定义的字符串元素最多有4个,超出就会报错。

如图:

masm5支持dw与dd定义的字符串元素最多有2个,但是在内存中dd还是会占4个字节,dw占2个字节。

超出会报错:

综上所述,定义字符串用db是最好的解决方法,首先masm5与masm6对待db定义字符串的指令格式态度都一样,不会有不兼容的情况发生。其次db定义的长度是一个字节,因此不会有高低位的产生,所以db定义的字符串的元素顺序是怎样的在内存中还是怎样的,不是有反序的情况。

masm5与mam6对其他指令也有不兼容的情况,所以写汇编代码还要考虑使用的编译器是否支持指令的格式与写法

如图:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3